package com.zbkj.crmeb.store.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.common.PageParamRequest;
import com.zbkj.crmeb.export.vo.LogisticsExcelVo;
import com.zbkj.crmeb.store.model.OrderInfoDelivery;
import com.zbkj.crmeb.store.model.StoreOrderInfo;
import com.zbkj.crmeb.store.request.DeliveryRequest;
import com.zbkj.crmeb.store.request.GetOrderDeliveryListRequest;
import com.zbkj.crmeb.store.request.OrderInfoDeliveryRequest;
import com.zbkj.crmeb.store.request.StoreOrderSendRequest;
import com.zbkj.crmeb.store.response.DeliveryResponse;
import com.zbkj.crmeb.store.response.OrderDeliveryResponse;

import java.util.List;
import java.util.Map;


/**
 * 物流
 */
public interface OrderInfoDeliveryService extends IService<OrderInfoDelivery> {

    /**
     * 
     * @author cyz
     * @date 2021/4/9 18:12
     * @param request
     * @return com.github.pagehelper.PageInfo<com.zbkj.crmeb.store.model.OrderInfoDelivery>
     */
    List<OrderInfoDelivery> getDeliveryList(OrderInfoDeliveryRequest request);

    List<OrderInfoDelivery> getUserDeliveryList(OrderInfoDeliveryRequest request);

    /**
     * 
     * @author cyz
     * @date 2021/4/9 18:29
     * @param request 
     * @return java.lang.Integer
     */
    Integer addDelivery(OrderInfoDeliveryRequest request);

    /**
     * 
     * @author cyz
     * @date 2021/4/9 18:29
     * @param request
     * @return java.lang.Integer
     */
    Integer udpateDelivery(OrderInfoDeliveryRequest request);

    /**
     * 
     * @author cyz
     * @date 2021/4/12 16:17
     * @param request
     * @param orderInfoDelivery 物流信息 notnull
     * @return com.zbkj.crmeb.store.response.DeliveryResponse
     */
    public DeliveryResponse queryDeliveryByShowApi(DeliveryRequest request, OrderInfoDelivery orderInfoDelivery) ;

    /**
     * 
     * @author cyz
     * @date 2021/4/12 17:55
 * @param orderInfoId
 * @return com.zbkj.crmeb.store.model.OrderInfoDelivery
     */
    public OrderInfoDelivery selectDeliveryByOrderInfoId(Integer orderInfoId);

    /**
     * 判断物流签收时间
     * @param request
     */
//    boolean judgeSignIn(OrderInfoDelivery request);

    OrderDeliveryResponse getOrderDeliveryList(GetOrderDeliveryListRequest request);

    Object batchExtendedLogistics(StoreOrderSendRequest request);

    Map<Integer,List<OrderInfoDelivery>> getOrderDeliveryInfoList(Integer id);

    List<StoreOrderInfo> getLogisticsList(GetOrderDeliveryListRequest request, PageParamRequest pageParamRequest);
}
